﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem;
using Sinacor.Infra.Common;
using Sinacor.Infra.UI.Common;


namespace Sinacor.UI.Bovespa.Ordens.Communication.Translator
{
    class TranslatorConsultarOrdemDistribuidaResponse : BaseTranslator<
        Model.OrdemDistribuicao,
        OrdemDistribuicao,
        ModelCollection<Model.OrdemDistribuicao>,
        List<OrdemDistribuicao>>
    {
        public override Sinacor.UI.Bovespa.Ordens.Model.OrdemDistribuicao Translate(OrdemDistribuicao from)
        {
            if (from == null) return null;

            Model.OrdemDistribuicao to = new Sinacor.UI.Bovespa.Ordens.Model.OrdemDistribuicao();

            to.IndicadorCancelamentoDistribuicao = from.IndicadorCancelamentoDistribuicao;

            to.ApelidoCliente = from.ApelidoCliente;
            to.Bolsa = from.Bolsa;
            if(from.CodigoBroker != null)
                to.CodigoBroker = (int)from.CodigoBroker;

            if(from.CodigoCliente != null)
                to.CodigoCliente = (int)from.CodigoCliente;

            if(from.DataOrdem != null)
                to.DataOrdem = (DateTime)from.DataOrdem;

            if(from.DataPregao != null)
                to.DataPregao = (DateTime)from.DataPregao;

            if (from.HoraOrdem != null)
                to.HoraOrdem = (DateTime)from.HoraOrdem;

            //to.IndicadorCancelamentoDistribuicao = from.

            to.IndicadorDistribuicao = from.IndicadorDistribuicao;

            to.LoginOperador = from.LoginOperador;

            if (from.NaturezaOperacao != null)
                to.NaturezaOperacao = (Model.Enum.TipoNaturezaOperacao)from.NaturezaOperacao;

            to.NomeCliente = from.NomeCliente;

            if(from.NumeroConjunto != null)
                to.NumeroConjunto = (int)from.NumeroConjunto;

            if (from.NumeroOrdemOriginal != null)
                to.NumeroOrdemOriginal = (int)from.NumeroOrdemOriginal;

            if (from.NumeroOrdemSubSequencia != null)
                to.NumeroOrdemSubSequencia = (int)from.NumeroOrdemSubSequencia;

            if (from.PercentualDistribuido != null)
                to.PercentualDistribuido = (int)from.PercentualDistribuido;

            if (from.Quantidade != null)
                to.Quantidade = (decimal)from.Quantidade;

            if (from.QuantidadeCasada != null)
                to.QuantidadeCasada = (decimal)from.QuantidadeCasada;

            if (from.QuantidadeDistribuida != null)
                to.QuantidadeDistribuida = (int)from.QuantidadeDistribuida;

            if (from.TipoMercado != null)
                to.TipoMercado = (Model.Enum.TipoMercado)from.TipoMercado;

            if(from.NumeroOrdem.HasValue)
            to.NumeroOrdem = from.NumeroOrdem.Value;

            to.Titulo = from.Titulo;

            to.NumeroNegocio = from.NumeroNegocio;

            return to;

        }
    }
}
